1. Field of the Invention
The present invention relates to the field of data entry and retrieval and, more particularly, to a method and system for annotating changing views of data.
2. Description of the Related Art
An annotation system is used to create, store, and retrieve descriptive information about objects. Virtually any identifiable type of object may be annotated, such as a matrix of data (e.g., a spreadsheet or database table), a text document or an image. Further, subportions of objects (sub-objects) may be annotated, such as a cell, row, or column in a database table or a section, paragraph, or word in a text document. Some annotation systems store annotations separately, without modifying the annotated data objects themselves. For example, annotations are often contained in annotation records stored in a separate annotation store, typically a database. The annotation records typically contain information about the annotations contained therein, such as the creation date and author of the annotation, and an identification of the annotated data object, typically in the form of an index.
An indexing scheme is typically used to map each annotation to the annotated data object or sub-object, based on the index. Therefore, the index must provide enough specificity to allow the indexing scheme to locate the annotated data object (or sub-object). Further, the indexing scheme must work both ways: given an index, the indexing scheme must be able to locate the annotated data object and, given an object, the indexing scheme must be able to calculate the index for use in classification, comparison, and searching (e.g., to search for annotations for a given data object).
Relational databases are typically viewed by creating and issuing queries designed to return desired data. The desired data may be distributed among several rows and columns of data that may span multiple tables in the database. Therefore, in order to retrieve the desired data, the queries generally contain sufficient information to join the multiple tables and filter the rows and columns to return the desired data in a concise format, commonly referred to as a view. In other words, if the query was properly constructed, the resulting view is a subset of the database containing the desired data.
Annotations may be made describing entire views or sub-portions of a view, such as a row displayed in a view (a view row). However, as described above, a row in a view may represent an amalgam of data from many tables and columns. Further, views change from query to query, depending on the query conditions and the columns specified in the results field. Therefore, a challenge is presented when deciding what data should be referenced by the annotation. In other words, a decision must be made regarding what referencing data should be stored with an annotation related to a specific view that would allow the annotation to be retrieved and displayed.
For example, a user may create an annotation for a row in a view of data with columns A, B, and C. Clearly, the annotation should be displayed if the exact same view row is displayed. Similarly, the annotation should probably not be displayed if a subsequent view has neither columns A, B, and C. However, when only a subset of rows visible in the annotated view is visible in the subsequent view, whether or not to display the annotation may not be so clear. For example, if a subsequent view has columns A, B, and D (and not C), it may not be desirable to display the annotation created for the view with columns A, B, and C. On the other hand, if a subsequent view entirely encompasses the original view, for example, containing columns A, B, C, and D, the annotation for the original view should probably be displayed.
Accordingly, there is a need for a method of attaching and displaying annotations to changing data views. Preferably, the method will allow some level of user control to determine how closely a displayed view must match an annotated view before a corresponding annotation is displayed.